<?php

class registro_preliminar_emails extends CI_Model {

    function __construct() {
        parent::__construct();
    }

    // Inserta provisionalmente los datos del preregistro
    function insertar_email_pendiente($email, $cod_postal, $fecha_hora_peticion) {

        $fecha_peticion = idate('Y', $fecha_hora_peticion) * 10000 + idate('m', $fecha_hora_peticion) * 100 + idate('d', $fecha_hora_peticion);
        $hora_peticion = idate('H', $fecha_hora_peticion) * 10000 + idate('i', $fecha_hora_peticion) * 100 + idate('s', $fecha_hora_peticion);

        $this->db->trans_begin();
        try {
            $new_item = array(
                'email' => $email,
                'cod_postal' => $cod_postal,
                'fecha_peticion' => $fecha_peticion,
                'hora_peticion' => $hora_peticion
            );

            // Se inserta el registro
            $this->db->insert('pre_emails_pendientes', $new_item);
        } catch (Exception $e) {
            $this->db->trans_rollback();
            log_message('debug', 'excepcion: ' . $e->getMessage());
        }
        $this->db->trans_commit();
    }

    //Comprueba que si el email introducido en el preregistro, ya está confirmado
    function comprobar_en_confirmados($email) {

        $this->db->trans_begin();
        $ssql = "select * from pre_emails_confirmados where email = '" . $email . "'";
        $query = $this->db->query($ssql);
        $this->db->trans_commit();

        return $query->num_rows();
    }

    //Comprueba que el email introducido en el preregistro, no está pendiente
    function comprobar_en_pendientes($email) {

        $this->db->trans_begin();
        $ssql = "select * from pre_emails_pendientes where email = '" . $email . "'";
        $query = $this->db->query($ssql);
        $this->db->trans_commit();
        return $query->num_rows();
    }

    //Comprueba que el email introducido en el preregistro, no se le puede molestar
    function comprobar_en_no_molestar($email) {

        $this->db->trans_begin();
        $ssql = "select * from pre_emails_no_molestar where email = '" . $email . "'";
        $query = $this->db->query($ssql);
        $this->db->trans_commit();
        return $query->num_rows();
    }

    //Comprueba que el email introducido en el preregistro, no está caducado
    function comprobar_en_caducados($email) {

        $this->db->trans_begin();
        $ssql = "select * from pre_emails_caducados where email = '" . $email . "'";
        $query = $this->db->query($ssql);
        $this->db->trans_commit();
        return $query->num_rows();
    }

    //ACTIVA el email introducido en el preregistro, si está como pendiente
    function insertar_en_confirmados($email) {

        $error = 0;

        $this->db->trans_begin();

        $fecha_hora_confirmacion = time();
        $fecha_confirmacion = idate('Y', $fecha_hora_confirmacion) * 10000 + idate('m', $fecha_hora_confirmacion) * 100 + idate('d', $fecha_hora_confirmacion);
        $hora_confirmacion = idate('H', $fecha_hora_confirmacion) * 10000 + idate('i', $fecha_hora_confirmacion) * 100 + idate('s', $fecha_hora_confirmacion);

        $ssql = "insert into pre_emails_confirmados(email, cod_postal, fecha_peticion, hora_peticion, fecha_confirmacion, hora_confirmacion) " .
                    "select email, cod_postal, fecha_peticion, hora_peticion, " . $fecha_confirmacion . "," . $hora_confirmacion . " " .
                    "from pre_emails_pendientes " .
                    "where email = '" . $email . "'";

        $query = $this->db->query($ssql);
        
        if ($this->db->trans_status() === FALSE) {
            $error = 1;
            $this->db->trans_rollback();

        }else{

            $ssql = "delete from pre_emails_pendientes " .
                    "where email = '" . $email . "'";

            $query = $this->db->query($ssql);
            
            if ($this->db->trans_status() === FALSE) {
                $error = 1;
                $this->db->trans_rollback();
            }
        }

        $this->db->trans_commit();

        return $error;
    }

    //Elimina de todas las tablas de preregistros el email introducido en el preregistro
    function eliminar_datos($email) {

        $error = 0;

        $this->db->trans_begin();

        $ssql = "delete from pre_emails_pendientes " .
                "where email = '" . $email . "'";

        $query = $this->db->query($ssql);

        if ($this->db->trans_status() === FALSE) {
            $error = 1;
            $this->db->trans_rollback();
        }

        if ($error == 0) {
            $ssql = "delete from pre_emails_caducados " .
            "where email = '" . $email . "'";

            $query = $this->db->query($ssql);

            if ($this->db->trans_status() === FALSE) {
                $error = 1;
                $this->db->trans_rollback();
            }
        }

        if ($error == 0) {
            $ssql = "delete from pre_emails_confirmados " .
            "where email = '" . $email . "'";

            $query = $this->db->query($ssql);

            if ($this->db->trans_status() === FALSE) {
                $error = 1;
                $this->db->trans_rollback();
            }
        }

        if ($error == 0) {
            $ssql = "delete from pre_emails_no_molestar " .
            "where email = '" . $email . "'";

            $query = $this->db->query($ssql);

            if ($this->db->trans_status() === FALSE) {
                $error = 1;
                $this->db->trans_rollback();
            }
        }

        $this->db->trans_commit();

        return $error;
    }

    //Comprueba que si el email introducido en el preregistro, ya está confirmado
    function insertar_en_evitar($email) {

        $error = 0;

        $this->db->trans_begin();

        $fecha_hora_no_molestar = time();
        $fecha_no_molestar = idate('Y', $fecha_hora_no_molestar) * 10000 + idate('m', $fecha_hora_no_molestar) * 100 + idate('d', $fecha_hora_no_molestar);
        $hora_no_molestar = idate('H', $fecha_hora_no_molestar) * 10000 + idate('i', $fecha_hora_no_molestar) * 100 + idate('s', $fecha_hora_no_molestar);

        $ssql = "insert into pre_emails_no_molestar(email, cod_postal, fecha_peticion, hora_peticion, fecha_no_molestar, hora_no_molestar) " .
                    "select email, cod_postal, fecha_peticion, hora_peticion, " . $fecha_no_molestar . "," . $hora_no_molestar . " " .
                    "from pre_emails_pendientes " .
                    "where email = '" . $email . "'";

        $query = $this->db->query($ssql);

        if ($this->db->trans_status() === FALSE) {
            $error = 1;
            $this->db->trans_rollback();

        }else{

            $ssql = "delete from pre_emails_pendientes " .
                    "where email = '" . $email . "'";

            $query = $this->db->query($ssql);

            if ($this->db->trans_status() === FALSE) {
                $error = 1;
                $this->db->trans_rollback();
            }
        }

        $this->db->trans_commit();

        return $error;
    }


}

?>
